package com.guaoran.jvm.newObject;

/**
 * @author : guaoran
 * @Description
 *  逃逸分析与栈上分配
 * @date :2019/3/1 16:04
 */
public class StackAllocation {
    public StackAllocation obj;

    //逃逸
    public StackAllocation getInstance(){
        //逃逸分析是指，在方法中，使用return new出的对象或者将new出来的对象赋值给一个全局的变量
        return  obj == null?new StackAllocation():obj;
    }
    //逃逸
    public void setObj() {
        this.obj = new StackAllocation();
    }
    //没有逃逸
    public void useStackAllocation(){
        //栈上分配是指在没有逃逸的方法中，在栈上分配内存
        StackAllocation stackAllocation = new StackAllocation();
    }
}
